Three dimensional graphics are central to many applications. For example, computer aided design (CAD) has spurred growth in many industries where computer terminals, cursors, CRT's and graphics terminals are replacing pencil and paper, and computer disks and tapes are replacing drawing vaults. Most, if not all, of these industries have a great need to manipulate and display three-dimensional objects. This has lead to widespread interest and research into methods of modeling, rendering, and displaying three-dimensional objects on a computer screen or other display device. The amount of computations needed to realistically render and display a three-dimensional graphical object, however, remains quite large and true realistic display of three-dimensional objects have largely been limited to high end systems. There is, however, an ever-increasing need for inexpensive systems that can quickly and realistically render and display three dimensional objects.
One industry that has seen a tremendous amount of growth in the last few years is the computer game industry. The current generation of computer games is moving to three-dimensional graphics in an ever increasing fashion. At the same time, the speed of play is being driven faster and faster. This combination has fueled a genuine need for the rapid rendering of three-dimensional graphics in relatively inexpensive systems. In addition to gaming, this need is also fueled by e-Commerce applications, which demand increased multimedia capabilities.
Rendering and displaying three-dimensional graphics typically involves many calculations and computations. For example, to render a three dimensional object, a set of coordinate points or vertices that define the object to be rendered must be formed. Vertices can be joined to form polygons that define the surface of the object to be rendered and displayed. Once the vertices that define an object are formed, the vertices must be transformed from an object or model frame of reference to a world frame of reference and finally to two-dimensional coordinates that can be displayed on a flat display device. Along the way, vertices may be rotated, scaled, eliminated or clipped because they fall outside the viewable area, lit by various lighting schemes, colorized, and so forth. Thus the process of rendering and displaying a three-dimensional object can be computationally intensive and may involve a large number of vertices.
One specific operation that occurs in an application program in addition to rendering is the calculation of partial differential equations. For example, partial differential equations can be used to determine the location of objects or surfaces to be rendered. Such partial differential equations are traditionally calculated utilizing software and a central processor unit (CPU), since such calculations are generally not cost effective to be implemented in hardware. However, calculating partial differential equations in software places a heavy burden of computation on the system which may be a significant bottleneck in the application program, and can therefore impede the process of rendering. With the growing demand for higher performance graphics for computers, the need for speeding up the solution of partial differential equations becomes imperative.
There is thus a general need to increase the speed and efficiency of the various processing components, while minimizing costs. In general, consolidation is often employed to increase the speed of a system. Consolidation refers to the incorporation of different processing modules on a single integrated circuit. With such processing modules communicating in a microscopic semiconductor environment, as opposed to external buses, speed and efficiency may be vastly increased. Additional gain may be achieved by performing many operations in parallel, as is common in a hardware graphics pipeline.
Consolidation is often limited, however, by a cost of implementing and manufacturing multiple processing modules on a single chip. One reason for this increase in cost is that the required integrated circuit would be of a size that is too expensive to be feasible. Rather than add unique circuitry to handle a problem, it is advantageous to leverage and extend existing circuitry in novel ways to handle the problem.